﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Microsoft.Windows.Controls"
                    xmlns:coreConverters="clr-namespace:Microsoft.Windows.Controls.Core.Converters"
                    xmlns:prims="clr-namespace:Microsoft.Windows.Controls.Primitives">

    <coreConverters:InverseBoolConverter x:Key="InverseBoolConverter" />

    <DataTemplate x:Key="DefaultWatermarkTemplate">
        <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False" />
    </DataTemplate>
    
    <Style x:Key="NumericUpDown" TargetType="Control">
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
        <Setter Property="HorizontalContentAlignment" Value="Right" />
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Control">
                    <local:ButtonSpinner x:Name="Spinner" IsTabStop="False" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}"
                                         AllowSpin="{Binding AllowSpin, RelativeSource={RelativeSource TemplatedParent}}" ShowButtonSpinner="{Binding ShowButtonSpinner, RelativeSource={RelativeSource TemplatedParent}}">
                        <local:WatermarkTextBox x:Name="TextBox" BorderThickness="0"
                                                Background="Transparent"
                                                ContextMenu="{TemplateBinding ContextMenu}"
                                                FontFamily="{TemplateBinding FontFamily}" 
                                                FontSize="{TemplateBinding FontSize}" 
                                                FontStretch="{TemplateBinding FontStretch}"
                                                FontStyle="{TemplateBinding FontStyle}" 
                                                FontWeight="{TemplateBinding FontWeight}" 
                                                Foreground="{TemplateBinding Foreground}" 
                                                HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}"
                                                MinWidth="20" AcceptsReturn="False"
                                                Padding="0"
                                                SelectAllOnGotFocus="{Binding SelectAllOnGotFocus, RelativeSource={RelativeSource TemplatedParent}}"
                                                TextAlignment="{Binding TextAlignment, RelativeSource={RelativeSource TemplatedParent}}"
                                                TextWrapping="NoWrap" 
                                                TabIndex="{TemplateBinding TabIndex}"
                                                Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}"
                                                VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                                Watermark="{Binding Watermark, RelativeSource={RelativeSource TemplatedParent}}"
                                                WatermarkTemplate="{Binding WatermarkTemplate, RelativeSource={RelativeSource TemplatedParent}}"/>
                    </local:ButtonSpinner>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- =============================================================================== -->
    <!-- DecimalUpDown                                                                   -->
    <!-- =============================================================================== -->

    <Style TargetType="{x:Type local:DecimalUpDown}" BasedOn="{StaticResource NumericUpDown}">
        <Setter Property="TextAlignment" Value="Right" />
        <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
    </Style>

    <!-- =============================================================================== -->
    <!-- DoubleUpDown                                                                    -->
    <!-- =============================================================================== -->

    <Style TargetType="{x:Type local:DoubleUpDown}" BasedOn="{StaticResource NumericUpDown}">
        <Setter Property="TextAlignment" Value="Right" />
        <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
    </Style>

    <!-- =============================================================================== -->
    <!-- IntegerUpDown                                                                   -->
    <!-- =============================================================================== -->

    <Style TargetType="{x:Type local:IntegerUpDown}" BasedOn="{StaticResource NumericUpDown}">
        <Setter Property="TextAlignment" Value="Right" />        
        <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
    </Style>
   
</ResourceDictionary>